package com.lwx.chapter8;

/**
 * 二叉堆是一棵完全二叉树，空的地方在树的右侧，节点一层一层的放，直到放不下了为止
 * 每一个节点都大于等于其子节点，每一个节点都是堆
 * 最大堆
 * 不一定层次低一定小于层次高德节点的值
 * 可以使用数组来表示完全二叉树
 *   1
 *  / \
 *  2  3
 *  parent(i) = i/2;
 *
 *  什么是堆？
 *  堆是用来实现优先队列的。
 *  什么是优先队列？
 *  优先队列是一种特殊的队列，队列要保持先进先出的规则，而优先队列，我们每次取数据，都能取到优先级最大的数据。
 *
 *  堆增加元素:
 *      先加在最后一个节点，每次都跟父节点比较，如果比父节点大，则与父节点交换;交换完成后，继续与其父节点进行比较交换，直达到达整棵树的根节点
 *  堆删除元素:
 *      将根节点去除，用最后一个叶子节点补充作为根节点;若根节点大于左右孩子中较大的值，则比较完成;否则将根节点中与左右孩子中较大的值交换;交换后
 *  父节点继续与左右孩子比较，直到父节点大于左右孩子中较大的值或者没有左右孩子;
 */
public interface Heap {
}
